package com.augurit.wf.bi.service;

import java.util.List;

import org.springside.modules.orm.Page;

import com.augurit.common.base.service.ICrudService;
import com.augurit.wf.bi.web.form.WfPageElementForm;

public interface IWfPageElementService extends ICrudService<WfPageElementForm, Long> {
	
	/**
	 * 删除公共页面元素
	 * @param ids
	 */
	public void deletePublicElements(Long...ids);
	/**
	 * 根据页面元素Code获取
	 * @param elementCode
	 * @return
	 */
	public WfPageElementForm getByElementCode(String elementCode);
	
	/**
	 * 根据页面元素id列表获取页面元素
	 * @param elementCodes
	 * @return
	 */
	public List<WfPageElementForm> batchGetByElementIds(List<String> elementCodes);
	
	/**
	 * 获取子页面元素
	 * @param parentElementId
	 * @return
	 */
	public List<WfPageElementForm> getChildElements(String parentElementId);
	
	/**
	 * 分组获取子页面元素
	 * @param parentElementId
	 * @return
	 */
	public List<WfPageElementForm> getChildElementsByGroup(String parentElementId);

	/**
	 * 添加页面元素
	 * @param form
	 */
	public void addPageElement(WfPageElementForm form);

	/**
	 * 利用外连接多表关联查询
	 * @param page
	 * @param form
	 * @return
	 */
	public Page<WfPageElementForm> cascadeSearchBySql(Page<WfPageElementForm> page, WfPageElementForm form);
	
	/**
	 * 获取公共的页面元素
	 * @param page
	 * @param form
	 * @return
	 */
	public Page<WfPageElementForm> getPublicElements(Page<WfPageElementForm> page, WfPageElementForm form);
	
	/**
	 * 获取公共的容器类页面元素
	 * @param page
	 * @param form
	 * @return
	 */
	public Page<WfPageElementForm> getPublicContainElements(Page<WfPageElementForm> page, WfPageElementForm form);
	
	/**
	 * 获取公共的页面元素
	 * @param page
	 * @param form
	 * @return
	 */
	public List<WfPageElementForm> getAllPublicElems();
	
	/**
	 * 是否存在elemCode的页面元素
	 * @param elementCode
	 * @param elementId
	 * @return
	 */
	public boolean isElemCodeExist(String elementCode, Long elementId);
}